package com.cruise.game.mapper;

import com.cruise.game.model.entity.Favorite;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * 收藏Mapper接口
 * 
 * @author cruise
 * @date 2025-02-28
 */
@Repository
public interface FavoriteMapper extends BaseMapper<Favorite> {

    /**
     * 根据用户ID和服务ID查询收藏
     *
     * @param userId    用户ID
     * @param serviceId 服务ID
     * @return 收藏
     */
    Favorite selectByUserIdAndServiceId(@Param("userId") Long userId, @Param("serviceId") Long serviceId);

    /**
     * 删除用户服务收藏
     *
     * @param userId    用户ID
     * @param serviceId 服务ID
     * @return 影响的行数
     */
    int deleteByUserIdAndServiceId(@Param("userId") Long userId, @Param("serviceId") Long serviceId);

    /**
     * 统计服务收藏数量
     *
     * @param serviceId 服务ID
     * @return 收藏数量
     */
    int countByServiceId(@Param("serviceId") Long serviceId);

    /**
     * 统计用户收藏数量
     *
     * @param userId 用户ID
     * @return 收藏数量
     */
    int countByUserId(@Param("userId") Long userId);

    /**
     * 查询收藏列表，包含游戏服务详情
     *
     * @param userId 用户ID
     * @param offset 偏移量
     * @param limit  限制数量
     * @return 收藏列表
     */
    List<Map<String, Object>> selectFavoriteListWithService(@Param("userId") Long userId,
            @Param("offset") int offset,
            @Param("limit") int limit);
}
